package com.dongzili.entity;

import com.baomidou.dynamic.datasource.annotation.DS;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.dongzili.enums.SexEnum;
import com.dongzili.enums.UserStatusEnum;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Data;

import javax.validation.constraints.Pattern;
import javax.validation.constraints.Size;
import java.time.LocalDateTime;
import java.util.List;

/**
* 用户表
* @TableName u_users
*/

@DS("xnyy")
@Data
@TableName(value ="u_users")
public class Users {

    @TableId(value="`id`", type = IdType.AUTO)
    private Long id;

//    /**
//    * 工号/学号
//    */
//    @TableField("`userNo`")
//    private String userNo;
//
//    /**
//    * 用户名
//    */
//    @TableField("`userName`")
//    private String userName;

    /**
    * 密码
    */
    @JsonIgnore
    @TableField("`password`")
    private String password;

    /**
    * 盐值
    */
    @JsonIgnore
    @TableField("`salt`")
    private String salt;

    /**
    * 真实名称
    */
    @TableField("`realname`")
    private String realname;
    /**
     * 性别
     */
    @TableField("`sex`")
    private SexEnum sex;

    /**
    * 科室
    */
    @TableField("`department`")
    private String department;

    /**
    * 专业
    */
    @TableField("`major`")
    private String major;

    /**
    * 学历
    */
    @TableField("`education`")
    private String education;

    /**
    * 入学年份
    */
    @TableField("`enrollmentYear`")
    private Integer enrollmentYear;

    /**
     * 状态
     */
    @TableField("`status`")
    private UserStatusEnum status;

    /**
     * 系统内部标识
     */
    @TableField("`sign`")
    private Boolean sign;

    /**
     * 手机号
     */
    @Size(min = 11, max = 11, message = "手机号长度必须为11位")
    @Pattern(regexp = "^1[3-9]\\d{9}$", message = "手机号格式不正确")
    @TableField("`phone`")
    private Long phone;

    /**
     * 头像
     */
    @TableField("`avatar`")
    private String avatar;

    /**
    * 创建时间
    */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    @JsonProperty("createTime")
    @TableField("`createTime`")
    private LocalDateTime createTime;

    /**
    * 更新时间
    */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    @JsonProperty("modifyTime")
    @TableField("`modifyTime`")
    private LocalDateTime modifyTime;

    @TableField(exist = false)
    private List<Long> roleIds;

    @TableField(exist = false)
    private List<Long> permissionIds;



}
